﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Drawing;
using ProjectN.Core.Element;
using System.Text.Json.Serialization;
using System.ComponentModel;

namespace ProjectN.Core.Instance
{
    public interface IPage
    {
        [Category("高级"), DisplayName("页面元素")]
        IEnumerable<IElement> Elements { get; }

        /// <summary>
        /// 获取带有编号的 id 列表，以允许自定义顺序。0-based 索引。
        /// </summary>
        [JsonIgnore, Browsable(false)]
        IEnumerable<IdPair<IElement>> IdentifiedElements => Elements.AsIdPair();
        
        [Category("基本"), DisplayName("页面宽度")]
        int Width { get; }
        
        [Category("基本"), DisplayName("页面高度")]
        int Height { get; }

        [Category("基本"), DisplayName("页面名称")]
        string Identity { get; }

        [Category("基本"), DisplayName("背景颜色")]
        Color BackgroundColor { get; }

        [Category("高级"), DisplayName("GUID")]
        Guid Guid { get; }
        IElement? GetElement(int id);
    }
}
